class dean(object):
	def __init__(self):
	  self.name = "dean"

	# All the other functions are the same as with the non object oriented setting (but they
	# should be instance methods so don't forget to add 'self' as an extra first argument).

	def hunt_choices(self, round_number, current_food, current_reputation, m,
			player_reputations):
	   
		hunt_decisions = []
		sigma = .01
		''' Since slacking is the dominant strategy I chose to attempt to 
			get a reputation of ~.3 so I can hunt with other hunters
			and then slack the rest of the time during the first four rounds
		'''
		if round_number < 4:
			desired_rep = .300
			for player_rep in player_reputations:
				chance = random.uniform(0.000, 1.000)
				if chance <= desired_rep + sigma:
					hunt_decisions.append('h')
				else:
					hunt_decisions.append('s')
		''' If my food ever gets low enough I choose to slack so I can try to build
			up more food
		'''
		elif current_food < len(player_reputations) * 3:
			for player_rep in player_reputations:
				hunt_decisions.append('s')
		''' Here I try to hunt with players who have high reputations,
			otherwise I slack
		'''
		elif round_number < 60:
			average = (sum(player_reputations)/len(player_reputations))
			deviation = []
			for player_rep in player_reputations:
				deviation.append((player_rep - average)*(player_rep - average))
			averageDev = (sum(deviation)/len(deviation))
			stdDev = averageDev**0.5

			for player_rep in player_reputations:
				if max(player_reputations) - player_rep < 1.2 * stdDev:
					hunt_decisions.append('h')
				else:
					hunt_decisions.append('s')
		# After building rep I slack till the end of the game to try to get food from other players
		else:
			for player_rep in player_reputations:
				hunt_decisions.append('s')
		return hunt_decisions

	def hunt_outcomes(*args, **kwargs):
		pass
		
	def round_end(*args, **kwargs):
		pass